// Copyright 2013 Emilie Gillet.
//
// Author: Emilie Gillet (emilie.o.gillet@gmail.com)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
// 
// See http://creativecommons.org/licenses/MIT/ for more information.
//
// -----------------------------------------------------------------------------
//
// Resources definitions.
//
// Automatically generated with:
// make resources


#include "yarns/resources.h"

namespace yarns {

static const char str_dummy[] = "dummy";


const char* string_table[] = {
  str_dummy,
};

const uint16_t lut_env_expo[] = {
       0,   1035,   2054,   3057,
    4045,   5018,   5975,   6918,
    7846,   8760,   9659,  10545,
   11416,  12275,  13120,  13952,
   14771,  15577,  16371,  17152,
   17921,  18679,  19425,  20159,
   20881,  21593,  22294,  22983,
   23662,  24331,  24989,  25637,
   26274,  26902,  27520,  28129,
   28728,  29318,  29899,  30471,
   31034,  31588,  32133,  32670,
   33199,  33720,  34232,  34737,
   35233,  35722,  36204,  36678,
   37145,  37604,  38056,  38502,
   38940,  39371,  39796,  40215,
   40626,  41032,  41431,  41824,
   42211,  42592,  42967,  43336,
   43699,  44057,  44409,  44756,
   45097,  45434,  45764,  46090,
   46411,  46727,  47037,  47344,
   47645,  47941,  48233,  48521,
   48804,  49083,  49357,  49627,
   49893,  50155,  50412,  50666,
   50916,  51162,  51404,  51642,
   51877,  52108,  52335,  52559,
   52780,  52997,  53210,  53421,
   53628,  53831,  54032,  54230,
   54424,  54616,  54804,  54990,
   55173,  55353,  55530,  55704,
   55876,  56045,  56211,  56375,
   56536,  56695,  56851,  57005,
   57157,  57306,  57453,  57597,
   57740,  57880,  58018,  58153,
   58287,  58419,  58548,  58676,
   58801,  58925,  59047,  59167,
   59285,  59401,  59515,  59628,
   59739,  59848,  59955,  60061,
   60165,  60267,  60368,  60468,
   60566,  60662,  60757,  60850,
   60942,  61032,  61121,  61209,
   61295,  61380,  61464,  61546,
   61628,  61707,  61786,  61863,
   61939,  62014,  62088,  62161,
   62233,  62303,  62372,  62441,
   62508,  62574,  62639,  62703,
   62767,  62829,  62890,  62950,
   63010,  63068,  63125,  63182,
   63238,  63293,  63347,  63400,
   63452,  63504,  63554,  63604,
   63654,  63702,  63750,  63797,
   63843,  63888,  63933,  63977,
   64021,  64063,  64105,  64147,
   64188,  64228,  64267,  64306,
   64344,  64382,  64419,  64456,
   64492,  64527,  64562,  64596,
   64630,  64664,  64696,  64729,
   64760,  64792,  64822,  64853,
   64883,  64912,  64941,  64969,
   64997,  65025,  65052,  65079,
   65105,  65131,  65157,  65182,
   65206,  65231,  65255,  65278,
   65302,  65324,  65347,  65369,
   65391,  65412,  65434,  65454,
   65475,  65495,  65515,  65535,
   65535,
};
const uint16_t lut_arpeggiator_patterns[] = {
   21845,  62965,  46517,  54741,
   43861,  22869,  38293,   2313,
   37449,  21065,  18761,  54553,
   27499,  23387,  30583,  28087,
   22359,  28527,  30431,  43281,
   28609,  53505,
};
const uint16_t lut_consonance[] = {
       0,      1,      4,      9,
      16,     25,     36,     49,
      64,     81,    100,    121,
     144,    169,    196,    225,
     256,    289,    324,    361,
     400,    441,    484,    529,
     576,    625,    676,    729,
     784,    841,    900,    961,
    1024,   1089,   1156,   1225,
    1296,   1369,   1444,   1521,
    1600,   1681,   1764,   1849,
    1936,   2025,   2116,   2209,
    2304,   2401,   2500,   2601,
    2704,   2809,   2916,   3025,
    3136,   3249,   3502,   3389,
    3278,   3169,   3062,   2957,
    2854,   2753,   2654,   2557,
    2462,   2369,   2278,   2189,
    2102,   2017,   1934,   1853,
    1774,   1697,   1622,   1549,
    1478,   1409,   1342,   1277,
    1214,   1153,   1094,   1037,
     982,    929,    878,    829,
     782,    737,    694,    653,
     614,    577,    542,    509,
     478,    449,    422,    397,
     374,    353,    334,    317,
     302,    289,    278,    269,
     262,    257,    254,    253,
     254,    257,    262,    269,
     278,    289,    302,    317,
     334,    353,    374,    397,
     422,    449,    231,    206,
     183,    162,    143,    126,
     111,     98,     87,     78,
      71,     66,     63,     62,
      63,     66,     71,     78,
      87,     98,    111,    126,
     143,    162,    183,    206,
     231,    258,    287,    318,
     351,    386,    423,    462,
     503,    546,    591,    638,
     687,    738,    791,    846,
     903,    962,   1023,   1086,
    1151,   1218,   1287,   1358,
    1431,   1506,   1583,   1662,
    1743,   1826,   1911,   1998,
    2087,   1978,   1891,   1806,
    1723,   1642,   1563,   1486,
    1411,   1338,   1267,   1198,
    1131,   1066,   1003,    942,
     883,    826,    771,    718,
     667,    618,    571,    526,
     483,    442,    403,    366,
     331,    298,    267,    238,
     211,    186,    163,    142,
     123,    106,     91,     78,
      67,     58,     51,     46,
      43,     42,     43,     46,
      51,     58,     67,     78,
      91,    106,    123,    142,
     163,    186,    211,    234,
     207,    182,    159,    138,
     119,    102,     87,     74,
      63,     54,     47,     42,
      39,     38,     39,     42,
      47,     54,     63,     74,
      87,    102,    119,    138,
     159,    182,    207,    234,
     263,    294,    327,    362,
     399,    438,    479,    522,
     567,    614,    663,    714,
     767,    822,    879,    938,
     999,   1062,   1127,   1194,
    1263,   1334,   1407,   1482,
    1559,   1638,   1719,   1802,
    1887,   1974,   2063,   2154,
    2247,   2342,   2439,   2538,
    2639,   2742,   2847,   2954,
    3063,   3174,   3287,   3344,
    3231,   3120,   3011,   2904,
    2799,   2696,   2595,   2496,
    2399,   2304,   2211,   2120,
    2031,   1944,   1859,   1776,
    1695,   1616,   1539,   1464,
    1391,   1320,   1251,   1184,
    1119,   1056,    995,    936,
     879,    824,    771,    720,
     671,    624,    579,    536,
     495,    456,    419,    384,
     351,    320,    291,    264,
     239,    216,    195,    176,
     159,    144,    131,    120,
     111,    104,     99,     96,
      95,     96,     99,    104,
     111,    120,    131,    144,
     159,    176,    195,    216,
     239,    264,    291,    193,
     168,    145,    124,    105,
      88,     73,     60,     49,
      40,     33,     28,     25,
      24,     25,     28,     33,
      40,     49,     60,     73,
      88,    105,    124,    145,
     168,    193,    220,    249,
     280,    313,    348,    385,
     424,    465,    508,    553,
     600,    649,    700,    753,
     808,    865,    924,    985,
    1048,   1113,   1180,   1249,
    1320,   1393,   1468,   1545,
    1624,   1705,   1788,   1873,
    1960,   2043,   1954,   1867,
    1782,   1699,   1618,   1539,
    1462,   1387,   1314,   1243,
    1174,   1107,   1042,    979,
     918,    859,    802,    747,
     694,    643,    594,    547,
     502,    459,    418,    379,
     342,    307,    274,    243,
     214,    187,    162,    139,
     118,     99,     82,     67,
      54,     43,     34,     27,
      22,     19,     18,     19,
      22,     27,     34,     43,
      54,     67,     82,     99,
     118,    139,    162,    187,
     214,    321,    296,    273,
     252,    233,    216,    201,
     188,    177,    168,    161,
     156,    153,    152,    153,
     156,    161,    168,    177,
     188,    201,    216,    233,
     252,    273,    296,    321,
     348,    377,    408,    441,
     476,    513,    552,    593,
     636,    681,    728,    777,
     828,    881,    936,    993,
    1052,   1113,   1176,   1241,
    1308,   1377,   1448,   1521,
    1596,   1673,   1752,   1833,
    1916,   2001,   2088,   2177,
    2268,   2361,   2456,   2553,
    2652,   2753,   2856,   2961,
    3068,   3177,   3288,   3401,
    3261,   3148,   3037,   2928,
    2821,   2716,   2613,   2512,
    2413,   2316,   2221,   2128,
    2037,   1948,   1861,   1776,
    1693,   1612,   1533,   1456,
    1381,   1308,   1237,   1168,
    1101,   1036,    973,    912,
     853,    796,    741,    688,
     637,    588,    541,    496,
     453,    412,    373,    336,
     301,    268,    237,    208,
     181,    156,    133,    112,
      93,     76,     61,     48,
      37,     28,     21,     16,
      13,     12,     13,     16,
      21,     28,     37,     48,
      61,     76,     93,    112,
     133,    156,    181,    208,
     237,    268,    301,    336,
     373,    412,    453,    496,
     541,    588,    637,    688,
     741,    796,    853,    912,
     973,   1036,   1101,   1168,
    1237,   1308,   1381,   1456,
    1533,   1612,   1693,   1776,
    1861,   1948,   2037,   2128,
    2221,   2316,   2413,   2512,
    2613,   2716,   2821,   2928,
    3037,   3148,   3261,   3376,
    3629,   3516,   3405,   3296,
    3189,   3084,   2981,   2880,
    2781,   2684,   2589,   2496,
    2405,   2316,   2229,   2144,
    2061,   1980,   1901,   1824,
    1749,   1676,   1605,   1536,
    1469,   1404,   1341,   1280,
    1221,   1164,   1109,   1056,
    1005,    956,    909,    864,
     821,    780,    741,    704,
     669,    636,    605,    576,
     549,    524,    501,    480,
     461,    444,    429,    416,
     405,    396,    389,    384,
     381,    380,    111,    110,
     111,    114,    119,    126,
     135,    146,    159,    174,
     191,    210,    231,    254,
     279,    276,    253,    232,
     213,    196,    181,    168,
     157,    148,    141,    136,
     133,    132,    133,    342,
     343,    346,    351,    358,
     367,    378,    391,    406,
     423,    442,    463,    486,
     511,    538,    567,    598,
     631,    666,    703,    742,
     783,    826,    871,    918,
     967,   1018,   1071,   1126,
    1183,   1242,   1303,   1366,
    1431,   1498,   1567,   1638,
    1711,   1786,   1863,   1942,
    2023,   2106,   2191,   2278,
    2367,   2458,   2551,   2646,
    2743,   2842,   2943,   3046,
    3151,   3258,   3367,   3478,
    3591,   3370,   3255,   3142,
    3031,   2922,   2815,   2710,
    2607,   2506,   2407,   2310,
    2215,   2122,   2031,   1942,
    1855,   1770,   1687,   1606,
    1527,   1450,   1375,   1302,
    1231,   1162,   1095,   1030,
     967,    906,    847,    790,
     735,    682,    631,    582,
     535,    490,    447,    406,
     367,    330,    295,    262,
     231,    202,    175,    150,
     127,    106,     87,     70,
      55,     42,     31,     22,
      15,     10,      7,      6,
       7,     10,     15,     22,
      31,     42,     55,     70,
      87,    106,    127,    150,
     175,    202,    231,    262,
     295,    330,    367,    406,
     447,    490,    535,    582,
     631,    682,    735,    790,
     847,    906,    967,   1030,
    1095,   1162,   1231,   1302,
    1375,   1450,   1527,   1606,
    1687,   1770,   1855,   1942,
    2031,   2122,   2215,   2310,
    2407,   2506,   2607,   2710,
    2815,   2922,   3031,   3142,
    3255,   3426,   3313,   3202,
    3093,   2986,   2881,   2778,
    2677,   2578,   2481,   2386,
    2293,   2202,   2113,   2026,
    1941,   1858,   1777,   1698,
    1621,   1546,   1473,   1402,
    1333,   1266,   1201,   1138,
    1077,   1018,    961,    906,
     853,    802,    753,    706,
     661,    618,    577,    538,
     501,    466,    433,    402,
     373,    346,    321,    298,
     277,    258,    241,    226,
     213,    202,    193,    186,
     181,    178,    177,    178,
     181,    186,    193,    202,
     213,    226,    241,    258,
     277,    298,    321,    346,
     373,    197,    172,    149,
     128,    109,     92,     77,
      64,     53,     44,     37,
      32,     29,     28,     29,
      32,     37,     44,     53,
      64,     77,     92,    109,
     128,    149,    172,    197,
     224,    253,    284,    317,
     352,    389,    428,    469,
     512,    557,    604,    653,
     704,    757,    812,    869,
     928,    989,   1052,   1117,
    1184,   1253,   1324,   1397,
    1472,   1549,   1628,   1709,
    1792,   1877,   1964,   2040,
    1951,   1864,   1779,   1696,
    1615,   1536,   1459,   1384,
    1311,   1240,   1171,   1104,
    1039,    976,    915,    856,
     799,    744,    691,    640,
     591,    544,    499,    456,
     415,    376,    339,    304,
     271,    240,    211,    184,
     159,    136,    115,     96,
      79,     64,     51,     40,
      31,     24,     19,     16,
      15,     16,     19,     24,
      31,     40,     51,     64,
      79,     96,    115,    136,
     159,    184,    211,    245,
     220,    197,    176,    157,
     140,    125,    112,    101,
      92,     85,     80,     77,
      76,     77,     80,     85,
      92,    101,    112,    125,
     140,    157,    176,    197,
     220,    245,    272,    301,
     332,    365,    400,    437,
     476,    517,    560,    605,
     652,    701,    752,    805,
     860,    917,    976,   1037,
    1100,   1165,   1232,   1301,
    1372,   1445,   1520,   1597,
    1676,   1757,   1840,   1925,
    2012,   2101,   2192,   2285,
    2380,   2477,   2576,   2677,
    2780,   2885,   2992,   3101,
    3212,   3325,   3300,   3187,
    3076,   2967,   2860,   2755,
    2652,   2551,   2452,   2355,
    2260,   2167,   2076,   1987,
    1900,   1815,   1732,   1651,
    1572,   1495,   1420,   1347,
    1276,   1207,   1140,   1075,
    1012,    951,    892,    835,
     780,    727,    676,    627,
     580,    535,    492,    451,
     412,    375,    340,    307,
     276,    247,    220,    195,
     172,    151,    132,    115,
     100,     87,     76,     67,
      60,     55,     52,     51,
      52,     55,     60,     67,
      76,     87,    100,    115,
     132,    151,    172,    195,
     220,    247,    199,    174,
     151,    130,    111,     94,
      79,     66,     55,     46,
      39,     34,     31,     30,
      31,     34,     39,     46,
      55,     66,     79,     94,
     111,    130,    151,    174,
     199,    226,    255,    286,
     319,    354,    391,    430,
     471,    514,    559,    606,
     655,    706,    759,    814,
     871,    930,    991,   1054,
    1119,   1186,   1255,   1326,
    1399,   1474,   1551,   1630,
    1711,   1794,   1879,   1966,
    2072,   1983,   1896,   1811,
    1728,   1647,   1568,   1491,
    1416,   1343,   1272,   1203,
    1136,   1071,   1008,    947,
     888,    831,    776,    723,
     672,    623,    576,    531,
     488,    447,    408,    371,
     336,    303,    272,    243,
     216,    191,    168,    147,
     128,    111,     96,     83,
      72,     63,     56,     51,
      48,     47,     48,     51,
      56,     63,     72,     83,
      96,    111,    128,    147,
     168,    191,    216,    243,
     391,    366,    343,    322,
     303,    286,    271,    258,
     247,    238,    231,    226,
     223,    222,    223,    226,
     231,    238,    247,    258,
     271,    286,    303,    322,
     343,    366,    391,    418,
     447,    478,    511,    546,
     583,    622,    663,    706,
     751,    798,    847,    898,
     951,   1006,   1063,   1122,
    1183,   1246,   1311,   1378,
    1447,   1518,   1591,   1666,
    1743,   1822,   1903,   1986,
    2071,   2158,   2247,   2338,
    2431,   2526,   2623,   2722,
    2823,   2926,   3031,   3138,
    3247,   3358,   3471,   3249,
    3136,   3025,   2916,   2809,
    2704,   2601,   2500,   2401,
    2304,   2209,   2116,   2025,
    1936,   1849,   1764,   1681,
    1600,   1521,   1444,   1369,
    1296,   1225,   1156,   1089,
    1024,    961,    900,    841,
     784,    729,    676,    625,
     576,    529,    484,    441,
     400,    361,    324,    289,
     256,    225,    196,    169,
     144,    121,    100,     81,
      64,     49,     36,     25,
      16,      9,      4,      1,
};


const uint16_t* lookup_table_table[] = {
  lut_env_expo,
  lut_arpeggiator_patterns,
  lut_consonance,
};

const int16_t lut_scale_pythagorean[] = {
       0,    -13,      5,     -8,
      10,     -3,     15,      3,
     -10,      8,     -5,     13,
};
const int16_t lut_scale_1_4_eb[] = {
       0,      0,      0,      0,
     -64,      0,      0,      0,
       0,      0,      0,    -64,
};
const int16_t lut_scale_1_4_e[] = {
       0,      0,      0,      0,
     -64,      0,      0,      0,
       0,      0,      0,      0,
};
const int16_t lut_scale_1_4_ea[] = {
       0,      0,      0,      0,
     -64,      0,      0,      0,
       0,    -64,      0,      0,
};
const int16_t lut_scale_bhairav[] = {
       0,    -13,   -141,   -269,
     -18,     -3,   -131,      3,
     -10,   -138,   -266,    -15,
};
const int16_t lut_scale_gunakri[] = {
       0,     15,   -113,   -241,
    -369,     -3,   -131,      3,
      18,   -110,   -238,   -366,
};
const int16_t lut_scale_marwa[] = {
       0,     15,   -113,   -241,
     -18,   -146,    -13,   -141,
    -269,    -20,   -148,    -15,
};
const int16_t lut_scale_shree[] = {
       0,    -13,   -141,   -269,
     -18,   -146,    -13,      3,
     -10,   -138,   -266,    -15,
};
const int16_t lut_scale_purvi[] = {
       0,     15,   -113,   -241,
     -18,   -146,    -13,      3,
      18,   -110,   -238,    -15,
};
const int16_t lut_scale_bilawal[] = {
       0,   -128,      5,   -123,
     -18,     -3,   -131,      3,
    -125,      8,   -120,    -15,
};
const int16_t lut_scale_yaman[] = {
       0,   -128,      5,   -123,
      10,   -118,     15,      3,
    -125,      8,   -120,     13,
};
const int16_t lut_scale_kafi[] = {
       0,   -128,    -23,     -8,
    -136,     -3,   -131,      3,
    -125,    -20,     -5,   -133,
};
const int16_t lut_scale_bhimpalasree[] = {
       0,   -128,      5,     20,
    -108,     -3,   -131,      3,
    -125,      8,     23,   -105,
};
const int16_t lut_scale_darbari[] = {
       0,   -128,      5,     -8,
    -136,     -3,   -131,      3,
     -10,   -138,     -5,   -133,
};
const int16_t lut_scale_rageshree[] = {
       0,   -128,      5,   -123,
     -18,     -3,   -131,      3,
    -125,    -20,     -5,   -133,
};
const int16_t lut_scale_khamaj[] = {
       0,   -128,      5,   -123,
     -18,     -3,   -131,      3,
    -125,      8,     -5,     13,
};
const int16_t lut_scale_mimal[] = {
       0,   -128,      5,     -8,
    -136,     -3,   -131,      3,
    -125,    -20,     -5,    -15,
};
const int16_t lut_scale_parameshwari[] = {
       0,    -13,   -141,     -8,
    -136,     -3,   -131,   -259,
    -387,    -20,     -5,   -133,
};
const int16_t lut_scale_rangeshwari[] = {
       0,   -128,      5,     -8,
    -136,     -3,   -131,      3,
    -125,   -253,   -381,    -15,
};
const int16_t lut_scale_gangeshwari[] = {
       0,   -128,   -256,   -384,
     -18,     -3,   -131,      3,
     -10,   -138,     -5,   -133,
};
const int16_t lut_scale_kameshwari[] = {
       0,   -128,      5,   -123,
    -251,   -379,    -13,      3,
    -125,    -20,     -5,   -133,
};
const int16_t lut_scale_pa__kafi[] = {
       0,   -128,      5,     -8,
    -136,     -3,   -131,      3,
    -125,      8,     -5,   -133,
};
const int16_t lut_scale_natbhairav[] = {
       0,   -128,      5,   -123,
     -18,     -3,   -131,      3,
     -10,   -138,   -266,    -15,
};
const int16_t lut_scale_m_kauns[] = {
       0,   -128,      5,   -123,
      10,     -3,   -131,   -259,
     -10,   -138,     -5,   -133,
};
const int16_t lut_scale_bairagi[] = {
       0,    -13,   -141,   -269,
    -397,     -3,   -131,      3,
    -125,   -253,     -5,   -133,
};
const int16_t lut_scale_b_todi[] = {
       0,    -13,   -141,     -8,
    -136,   -264,   -392,      3,
    -125,   -253,     -5,   -133,
};
const int16_t lut_scale_chandradeep[] = {
       0,   -128,   -256,     -8,
    -136,     -3,   -131,      3,
    -125,   -253,     -5,   -133,
};
const int16_t lut_scale_kaushik_todi[] = {
       0,   -128,   -256,     -8,
    -136,     -3,    -13,   -141,
     -10,   -138,   -266,   -394,
};
const int16_t lut_scale_jogeshwari[] = {
       0,   -128,   -256,     -8,
     -18,     -3,   -131,   -259,
    -387,    -20,     -5,   -133,
};


const int16_t* lookup_table_signed_table[] = {
  lut_scale_pythagorean,
  lut_scale_1_4_eb,
  lut_scale_1_4_e,
  lut_scale_1_4_ea,
  lut_scale_bhairav,
  lut_scale_gunakri,
  lut_scale_marwa,
  lut_scale_shree,
  lut_scale_purvi,
  lut_scale_bilawal,
  lut_scale_yaman,
  lut_scale_kafi,
  lut_scale_bhimpalasree,
  lut_scale_darbari,
  lut_scale_kafi,
  lut_scale_rageshree,
  lut_scale_khamaj,
  lut_scale_mimal,
  lut_scale_parameshwari,
  lut_scale_rangeshwari,
  lut_scale_gangeshwari,
  lut_scale_kameshwari,
  lut_scale_pa__kafi,
  lut_scale_natbhairav,
  lut_scale_m_kauns,
  lut_scale_bairagi,
  lut_scale_b_todi,
  lut_scale_chandradeep,
  lut_scale_kaushik_todi,
  lut_scale_jogeshwari,
  lut_scale_yaman,
};

const int16_t wav_exponential[] = {
   32767,  32250,  31740,  31238,
   30745,  30259,  29780,  29309,
   28845,  28388,  27939,  27496,
   27060,  26631,  26209,  25793,
   25384,  24981,  24584,  24193,
   23809,  23430,  23057,  22690,
   22329,  21974,  21623,  21279,
   20939,  20605,  20276,  19952,
   19634,  19320,  19011,  18707,
   18407,  18112,  17822,  17536,
   17255,  16978,  16705,  16437,
   16172,  15912,  15656,  15404,
   15155,  14911,  14670,  14433,
   14200,  13971,  13745,  13522,
   13303,  13087,  12875,  12666,
   12460,  12257,  12058,  11861,
   11668,  11477,  11290,  11106,
   10924,  10745,  10569,  10396,
   10225,  10057,   9892,   9729,
    9568,   9411,   9255,   9102,
    8952,   8803,   8657,   8514,
    8372,   8233,   8096,   7961,
    7828,   7697,   7568,   7442,
    7317,   7194,   7073,   6954,
    6836,   6721,   6607,   6495,
    6385,   6277,   6170,   6065,
    5961,   5859,   5759,   5660,
    5563,   5467,   5373,   5280,
    5189,   5099,   5010,   4923,
    4838,   4753,   4670,   4588,
    4507,   4428,   4350,   4273,
    4197,   4123,   4049,   3977,
    3906,   3836,   3767,   3699,
    3632,   3566,   3502,   3438,
    3375,   3313,   3252,   3193,
    3134,   3076,   3018,   2962,
    2907,   2852,   2798,   2746,
    2694,   2642,   2592,   2542,
    2493,   2445,   2398,   2351,
    2305,   2260,   2215,   2172,
    2129,   2086,   2044,   2003,
    1963,   1923,   1883,   1845,
    1807,   1769,   1732,   1696,
    1660,   1625,   1590,   1556,
    1522,   1489,   1457,   1425,
    1393,   1362,   1332,   1301,
    1272,   1243,   1214,   1185,
    1158,   1130,   1103,   1077,
    1050,   1025,    999,    974,
     950,    926,    902,    878,
     855,    832,    810,    788,
     766,    745,    724,    703,
     683,    663,    643,    624,
     604,    586,    567,    549,
     531,    513,    496,    478,
     462,    445,    429,    412,
     397,    381,    366,    350,
     336,    321,    306,    292,
     278,    264,    251,    237,
     224,    211,    199,    186,
     174,    161,    149,    138,
     126,    115,    103,     92,
      81,     71,     60,     50,
      39,     29,     19,     10,
       0,
};
const int16_t wav_ring[] = {
   32767,  32229,  31393,  30273,
   28886,  27253,  25395,  23334,
   21096,  18706,  16191,  13578,
   10894,   8168,   5425,   2694,
       0,  -2632,  -5177,  -7613,
   -9919, -12077, -14067, -15876,
  -17489, -18897, -20089, -21060,
  -21805, -22322, -22611, -22676,
  -22520, -22151, -21576, -20806,
  -19853, -18731, -17454, -16037,
  -14499, -12857, -11128,  -9332,
   -7488,  -5614,  -3729,  -1852,
       0,   1809,   3558,   5232,
    6818,   8300,   9668,  10911,
   12020,  12988,  13807,  14474,
   14986,  15342,  15541,  15585,
   15478,  15224,  14829,  14300,
   13645,  12874,  11996,  11022,
    9965,   8836,   7648,   6414,
    5146,   3858,   2563,   1273,
       0,  -1243,  -2445,  -3596,
   -4686,  -5705,  -6645,  -7499,
   -8261,  -8926,  -9489,  -9948,
  -10300, -10544, -10681, -10711,
  -10638, -10463, -10192,  -9828,
   -9378,  -8848,  -8245,  -7576,
   -6849,  -6073,  -5257,  -4408,
   -3537,  -2652,  -1761,   -875,
       0,    854,   1681,   2472,
    3220,   3921,   4567,   5154,
    5678,   6135,   6522,   6837,
    7079,   7247,   7341,   7362,
    7311,   7191,   7005,   6755,
    6445,   6081,   5666,   5207,
    4707,   4174,   3613,   3030,
    2431,   1822,   1211,    601,
       0,   -587,  -1155,  -1699,
   -2213,  -2695,  -3139,  -3542,
   -3902,  -4216,  -4482,  -4699,
   -4865,  -4981,  -5045,  -5060,
   -5025,  -4943,  -4814,  -4642,
   -4430,  -4179,  -3894,  -3578,
   -3235,  -2869,  -2483,  -2082,
   -1671,  -1253,   -832,   -413,
       0,    404,    794,   1168,
    1521,   1852,   2157,   2435,
    2682,   2898,   3081,   3230,
    3344,   3423,   3468,   3478,
    3454,   3397,   3309,   3191,
    3045,   2872,   2677,   2459,
    2224,   1972,   1707,   1431,
    1148,    861,    572,    284,
       0,   -277,   -546,   -802,
   -1046,  -1273,  -1483,  -1673,
   -1843,  -1992,  -2117,  -2220,
   -2298,  -2353,  -2383,  -2390,
   -2374,  -2335,  -2274,  -2193,
   -2093,  -1974,  -1840,  -1690,
   -1528,  -1355,  -1173,   -984,
    -789,   -592,   -393,   -195,
       0,    191,    375,    551,
     719,    875,   1019,   1150,
    1267,   1369,   1455,   1526,
    1580,   1617,   1638,   1643,
    1631,
};
const int16_t wav_steps[] = {
       0,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384, -16384, -16384, -16384,
  -16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
   16384,  16384,  16384,  16384,
    8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,  -8192,  -8192,  -8192,
   -8192,
};
const int16_t wav_noise[] = {
   13716,   7925,  19225,  14776,
   -9219,  -1752,    302, -14859,
   10004, -12184,   9356, -14191,
   14789, -11050,  -4443,  -6793,
  -15925,  -8351, -24206,   3269,
  -24844,  11845,   3855,  11758,
    2660,  17759,  20738,  -7045,
   -8666,  -2637,  -9087,   8833,
    -332, -10478,   3711,  -3878,
   -7513, -10008,  10826,   1627,
   -3064,  13038,  -2191,   -478,
  -11239, -15288,   2176,   2964,
   -4685,  15752,  -2115,  16201,
     816,   -670,   9801,  12353,
   -4583, -15963, -18605,    989,
  -30191,  32767,  -1211,  -8864,
    5294,   2926,  -7294,   4581,
    2915,   8532,    266,   5006,
    -601,   5489,  -5094,  14469,
    5854,  -1388,   6438,   5392,
   -7476,   -444,   2764,   3974,
   -6866,  -4343,  -4285,    -52,
  -13925,  -1559, -10989,  -1288,
    1820,  -4110,  -7203,  10333,
    -595,  -5758,   7185,  10779,
    3766,   3602,  -3824,  11074,
   -5103,  -4542,  -2329,   5936,
   -3550,  12485,   9837,   -333,
    1324,    431,   1856,   -430,
    4398,  -9774,   -290,  -3732,
   -7579,  -8316,  -1394,   3009,
    6207,  -4046,   1178,  -6466,
    4795,  -3700,    748,    814,
    1874,   4395,  -2306,   1054,
    5236,  -1481,  11375,  -3876,
   -2250,   1255,  -3723,   -481,
   -3767,  -2221,  -8481,    854,
    3222,    313,   -594,  -1866,
   -1799,   3864,   -932,  -2634,
    1558,   -454,    766,   2099,
    -999,   2109,   2329,    989,
    4429,    927,  -3405,   3288,
    1454,  -2031,    314,   2094,
   -2280,   -537,   3018,  -1312,
    1277,   -590,   1563,    424,
    -716,    365,    110,   1780,
     101,  -1317,  -1419,    882,
    -932,    378,   1670,  -1524,
    -813,   -460,    359,  -1433,
     188,    343,  -1138,   1133,
   -1389,  -1309,    727,   -385,
     498,     -5,   -157,  -1029,
    -584,   1036,    622,    117,
     226,   -497,   -134,    212,
   -1298,    -24,    298,   -507,
     -99,   -333,    394,    489,
     551,    419,   -164,    142,
       2,     86,    206,     -5,
     149,    -84,    145,     70,
     -15,    -86,     -3,     -4,
      74,     95,    -54,     -4,
      29,    -22,     40,     35,
     -12,    -15,    -17,    -11,
      -1,      0,      0,      0,
       0,
};
const int16_t wav_sine[] = {
       0,   -201,   -402,   -603,
    -804,  -1005,  -1206,  -1407,
   -1608,  -1809,  -2009,  -2210,
   -2410,  -2611,  -2811,  -3012,
   -3212,  -3412,  -3612,  -3811,
   -4011,  -4210,  -4410,  -4609,
   -4808,  -5007,  -5205,  -5404,
   -5602,  -5800,  -5998,  -6195,
   -6393,  -6590,  -6786,  -6983,
   -7179,  -7375,  -7571,  -7767,
   -7962,  -8157,  -8351,  -8545,
   -8739,  -8933,  -9126,  -9319,
   -9512,  -9704,  -9896, -10087,
  -10278, -10469, -10659, -10849,
  -11039, -11228, -11417, -11605,
  -11793, -11980, -12167, -12353,
  -12539, -12725, -12910, -13094,
  -13279, -13462, -13645, -13828,
  -14010, -14191, -14372, -14553,
  -14732, -14912, -15090, -15269,
  -15446, -15623, -15800, -15976,
  -16151, -16325, -16499, -16673,
  -16846, -17018, -17189, -17360,
  -17530, -17700, -17869, -18037,
  -18204, -18371, -18537, -18703,
  -18868, -19032, -19195, -19357,
  -19519, -19680, -19841, -20000,
  -20159, -20317, -20475, -20631,
  -20787, -20942, -21096, -21250,
  -21403, -21554, -21705, -21856,
  -22005, -22154, -22301, -22448,
  -22594, -22739, -22884, -23027,
  -23170, -23311, -23452, -23592,
  -23731, -23870, -24007, -24143,
  -24279, -24413, -24547, -24680,
  -24811, -24942, -25072, -25201,
  -25329, -25456, -25582, -25708,
  -25832, -25955, -26077, -26198,
  -26319, -26438, -26556, -26674,
  -26790, -26905, -27019, -27133,
  -27245, -27356, -27466, -27575,
  -27683, -27790, -27896, -28001,
  -28105, -28208, -28310, -28411,
  -28510, -28609, -28706, -28803,
  -28898, -28992, -29085, -29177,
  -29268, -29358, -29447, -29534,
  -29621, -29706, -29791, -29874,
  -29956, -30037, -30117, -30195,
  -30273, -30349, -30424, -30498,
  -30571, -30643, -30714, -30783,
  -30852, -30919, -30985, -31050,
  -31113, -31176, -31237, -31297,
  -31356, -31414, -31470, -31526,
  -31580, -31633, -31685, -31736,
  -31785, -31833, -31880, -31926,
  -31971, -32014, -32057, -32098,
  -32137, -32176, -32213, -32250,
  -32285, -32318, -32351, -32382,
  -32412, -32441, -32469, -32495,
  -32521, -32545, -32567, -32589,
  -32609, -32628, -32646, -32663,
  -32678, -32692, -32705, -32717,
  -32728, -32737, -32745, -32752,
  -32757, -32761, -32765, -32766,
  -32767, -32766, -32765, -32761,
  -32757, -32752, -32745, -32737,
  -32728, -32717, -32705, -32692,
  -32678, -32663, -32646, -32628,
  -32609, -32589, -32567, -32545,
  -32521, -32495, -32469, -32441,
  -32412, -32382, -32351, -32318,
  -32285, -32250, -32213, -32176,
  -32137, -32098, -32057, -32014,
  -31971, -31926, -31880, -31833,
  -31785, -31736, -31685, -31633,
  -31580, -31526, -31470, -31414,
  -31356, -31297, -31237, -31176,
  -31113, -31050, -30985, -30919,
  -30852, -30783, -30714, -30643,
  -30571, -30498, -30424, -30349,
  -30273, -30195, -30117, -30037,
  -29956, -29874, -29791, -29706,
  -29621, -29534, -29447, -29358,
  -29268, -29177, -29085, -28992,
  -28898, -28803, -28706, -28609,
  -28510, -28411, -28310, -28208,
  -28105, -28001, -27896, -27790,
  -27683, -27575, -27466, -27356,
  -27245, -27133, -27019, -26905,
  -26790, -26674, -26556, -26438,
  -26319, -26198, -26077, -25955,
  -25832, -25708, -25582, -25456,
  -25329, -25201, -25072, -24942,
  -24811, -24680, -24547, -24413,
  -24279, -24143, -24007, -23870,
  -23731, -23592, -23452, -23311,
  -23170, -23027, -22884, -22739,
  -22594, -22448, -22301, -22154,
  -22005, -21856, -21705, -21554,
  -21403, -21250, -21096, -20942,
  -20787, -20631, -20475, -20317,
  -20159, -20000, -19841, -19680,
  -19519, -19357, -19195, -19032,
  -18868, -18703, -18537, -18371,
  -18204, -18037, -17869, -17700,
  -17530, -17360, -17189, -17018,
  -16846, -16673, -16499, -16325,
  -16151, -15976, -15800, -15623,
  -15446, -15269, -15090, -14912,
  -14732, -14553, -14372, -14191,
  -14010, -13828, -13645, -13462,
  -13279, -13094, -12910, -12725,
  -12539, -12353, -12167, -11980,
  -11793, -11605, -11417, -11228,
  -11039, -10849, -10659, -10469,
  -10278, -10087,  -9896,  -9704,
   -9512,  -9319,  -9126,  -8933,
   -8739,  -8545,  -8351,  -8157,
   -7962,  -7767,  -7571,  -7375,
   -7179,  -6983,  -6786,  -6590,
   -6393,  -6195,  -5998,  -5800,
   -5602,  -5404,  -5205,  -5007,
   -4808,  -4609,  -4410,  -4210,
   -4011,  -3811,  -3612,  -3412,
   -3212,  -3012,  -2811,  -2611,
   -2410,  -2210,  -2009,  -1809,
   -1608,  -1407,  -1206,  -1005,
    -804,   -603,   -402,   -201,
       0,    201,    402,    603,
     804,   1005,   1206,   1407,
    1608,   1809,   2009,   2210,
    2410,   2611,   2811,   3012,
    3212,   3412,   3612,   3811,
    4011,   4210,   4410,   4609,
    4808,   5007,   5205,   5404,
    5602,   5800,   5998,   6195,
    6393,   6590,   6786,   6983,
    7179,   7375,   7571,   7767,
    7962,   8157,   8351,   8545,
    8739,   8933,   9126,   9319,
    9512,   9704,   9896,  10087,
   10278,  10469,  10659,  10849,
   11039,  11228,  11417,  11605,
   11793,  11980,  12167,  12353,
   12539,  12725,  12910,  13094,
   13279,  13462,  13645,  13828,
   14010,  14191,  14372,  14553,
   14732,  14912,  15090,  15269,
   15446,  15623,  15800,  15976,
   16151,  16325,  16499,  16673,
   16846,  17018,  17189,  17360,
   17530,  17700,  17869,  18037,
   18204,  18371,  18537,  18703,
   18868,  19032,  19195,  19357,
   19519,  19680,  19841,  20000,
   20159,  20317,  20475,  20631,
   20787,  20942,  21096,  21250,
   21403,  21554,  21705,  21856,
   22005,  22154,  22301,  22448,
   22594,  22739,  22884,  23027,
   23170,  23311,  23452,  23592,
   23731,  23870,  24007,  24143,
   24279,  24413,  24547,  24680,
   24811,  24942,  25072,  25201,
   25329,  25456,  25582,  25708,
   25832,  25955,  26077,  26198,
   26319,  26438,  26556,  26674,
   26790,  26905,  27019,  27133,
   27245,  27356,  27466,  27575,
   27683,  27790,  27896,  28001,
   28105,  28208,  28310,  28411,
   28510,  28609,  28706,  28803,
   28898,  28992,  29085,  29177,
   29268,  29358,  29447,  29534,
   29621,  29706,  29791,  29874,
   29956,  30037,  30117,  30195,
   30273,  30349,  30424,  30498,
   30571,  30643,  30714,  30783,
   30852,  30919,  30985,  31050,
   31113,  31176,  31237,  31297,
   31356,  31414,  31470,  31526,
   31580,  31633,  31685,  31736,
   31785,  31833,  31880,  31926,
   31971,  32014,  32057,  32098,
   32137,  32176,  32213,  32250,
   32285,  32318,  32351,  32382,
   32412,  32441,  32469,  32495,
   32521,  32545,  32567,  32589,
   32609,  32628,  32646,  32663,
   32678,  32692,  32705,  32717,
   32728,  32737,  32745,  32752,
   32757,  32761,  32765,  32766,
   32767,  32766,  32765,  32761,
   32757,  32752,  32745,  32737,
   32728,  32717,  32705,  32692,
   32678,  32663,  32646,  32628,
   32609,  32589,  32567,  32545,
   32521,  32495,  32469,  32441,
   32412,  32382,  32351,  32318,
   32285,  32250,  32213,  32176,
   32137,  32098,  32057,  32014,
   31971,  31926,  31880,  31833,
   31785,  31736,  31685,  31633,
   31580,  31526,  31470,  31414,
   31356,  31297,  31237,  31176,
   31113,  31050,  30985,  30919,
   30852,  30783,  30714,  30643,
   30571,  30498,  30424,  30349,
   30273,  30195,  30117,  30037,
   29956,  29874,  29791,  29706,
   29621,  29534,  29447,  29358,
   29268,  29177,  29085,  28992,
   28898,  28803,  28706,  28609,
   28510,  28411,  28310,  28208,
   28105,  28001,  27896,  27790,
   27683,  27575,  27466,  27356,
   27245,  27133,  27019,  26905,
   26790,  26674,  26556,  26438,
   26319,  26198,  26077,  25955,
   25832,  25708,  25582,  25456,
   25329,  25201,  25072,  24942,
   24811,  24680,  24547,  24413,
   24279,  24143,  24007,  23870,
   23731,  23592,  23452,  23311,
   23170,  23027,  22884,  22739,
   22594,  22448,  22301,  22154,
   22005,  21856,  21705,  21554,
   21403,  21250,  21096,  20942,
   20787,  20631,  20475,  20317,
   20159,  20000,  19841,  19680,
   19519,  19357,  19195,  19032,
   18868,  18703,  18537,  18371,
   18204,  18037,  17869,  17700,
   17530,  17360,  17189,  17018,
   16846,  16673,  16499,  16325,
   16151,  15976,  15800,  15623,
   15446,  15269,  15090,  14912,
   14732,  14553,  14372,  14191,
   14010,  13828,  13645,  13462,
   13279,  13094,  12910,  12725,
   12539,  12353,  12167,  11980,
   11793,  11605,  11417,  11228,
   11039,  10849,  10659,  10469,
   10278,  10087,   9896,   9704,
    9512,   9319,   9126,   8933,
    8739,   8545,   8351,   8157,
    7962,   7767,   7571,   7375,
    7179,   6983,   6786,   6590,
    6393,   6195,   5998,   5800,
    5602,   5404,   5205,   5007,
    4808,   4609,   4410,   4210,
    4011,   3811,   3612,   3412,
    3212,   3012,   2811,   2611,
    2410,   2210,   2009,   1809,
    1608,   1407,   1206,   1005,
     804,    603,    402,    201,
       0,
};


const int16_t* waveform_table[] = {
  wav_exponential,
  wav_ring,
  wav_steps,
  wav_noise,
  wav_sine,
};

const uint32_t lut_lfo_increments[] = {
  536870, 551723, 566986, 582672,
  598792, 615357, 632381, 649876,
  667855, 686331, 705319, 724831,
  744884, 765491, 786668, 808431,
  830797, 853781, 877401, 901674,
  926619, 952254, 978598, 1005671,
  1033493, 1062084, 1091467, 1121662,
  1152693, 1184583, 1217354, 1251032,
  1285642, 1321209, 1357761, 1395323,
  1433925, 1473594, 1514362, 1556256,
  1599310, 1643555, 1689024, 1735751,
  1783771, 1833119, 1883832, 1935948,
  1989506, 2044546, 2101109, 2159236,
  2218971, 2280359, 2343445, 2408277,
  2474902, 2543370, 2613732, 2686041,
  2760351, 2836716, 2915194, 2995843,
  3078723, 3163896, 3251425, 3341376,
  3433815, 3528812, 3626436, 3726762,
  3829863, 3935816, 4044700, 4156597,
  4271589, 4389763, 4511206, 4636008,
  4764264, 4896067, 5031517, 5170714,
  5313762, 5460767, 5611840, 5767091,
  5926638, 6090599, 6259095, 6432253,
  6610202, 6793073, 6981004, 7174133,
  7372606, 7576569, 7786175, 8001580,
  8222944, 8450432, 8684213, 8924462,
  9171357, 9425083, 9685828, 9953787,
  10229159, 10512149, 10802967, 11101832,
  11408964, 11724593, 12048954, 12382289,
  12724845, 13076879, 13438651, 13810431,
  14192497, 14585133, 14988631, 15403292,
  15829424, 16267345, 16717382, 17179869,
};
const uint32_t lut_portamento_increments[] = {
  1431655765, 1106222130, 868222962, 690923537,
  556658529, 453480095, 373137450, 309825343,
  259389627, 218811719, 185867296, 158896175,
  136644562, 118155233, 102690005, 89674278,
  78656889, 69280712, 61260914, 54368700,
  48419063, 43261459, 38772666, 34851256,
  31413304, 28389016, 25720076, 23357538,
  21260142, 19392971, 17726353, 16234984,
  14897210, 13694433, 12610630, 11631955,
  10746405, 9943546, 9214282, 8550665,
  7945730, 7393357, 6888161, 6425388,
  6000834, 5610773, 5251896, 4921259,
  4616237, 4334485, 4073904, 3832614,
  3608927, 3401323, 3208435, 3029028,
  2861988, 2706306, 2561066, 2425440,
  2298675, 2180084, 2069043, 1964983,
  1867383, 1775769, 1689704, 1608791,
  1532664, 1460986, 1393451, 1329773,
  1269691, 1212964, 1159371, 1108705,
  1060776, 1015410, 972443, 931725,
  893116, 856487, 821716, 788692,
  757310, 727474, 699093, 672082,
  646363, 621863, 598513, 576249,
  555010, 534741, 515389, 496904,
  479241, 462355, 446207, 430757,
  415971, 401813, 388253, 375260,
  362806, 350865, 339410, 328420,
  317870, 307741, 298012, 288665,
  279681, 271044, 262738, 254747,
  247058, 239657, 232531, 225668,
  219056, 212685, 206543, 200622,
  194911, 189403, 184087, 178956,
};
const uint32_t lut_oscillator_increments[] = {
  594570139, 598878640, 603218361, 607589530,
  611992374, 616427123, 620894008, 625393262,
  629925120, 634489817, 639087591, 643718683,
  648383334, 653081787, 657814287, 662581081,
  667382416, 672218544, 677089717, 681996188,
  686938214, 691916051, 696929960, 701980202,
  707067040, 712190739, 717351567, 722549792,
  727785686, 733059521, 738371572, 743722117,
  749111434, 754539804, 760007511, 765514839,
  771062075, 776649508, 782277431, 787946136,
  793655918, 799407076, 805199909, 811034720,
  816911812, 822831491, 828794068, 834799851,
  840849155, 846942294, 853079587, 859261354,
  865487916, 871759598, 878076727, 884439633,
  890848647, 897304104, 903806339, 910355693,
  916952505, 923597121, 930289887, 937031151,
  943821265, 950660583, 957549461, 964488259,
  971477339, 978517064, 985607802, 992749922,
  999943798, 1007189803, 1014488315, 1021839716,
  1029244387, 1036702717, 1044215092, 1051781905,
  1059403550, 1067080425, 1074812930, 1082601467,
  1090446444, 1098348268, 1106307352, 1114324111,
  1122398963, 1130532329, 1138724632, 1146976300,
  1155287763, 1163659455, 1172091811, 1180585271,
  1189140279,
};
const uint32_t lut_euclidean[] = {
       0,      1,      1,      1,
       1,      1,      1,      1,
       1,      1,      1,      1,
       1,      1,      1,      1,
       1,      1,      1,      1,
       1,      1,      1,      1,
       1,      1,      1,      1,
       1,      1,      1,      1,
       0,      1,      3,      3,
       3,      3,      3,      3,
       3,      3,      3,      3,
       3,      3,      3,      3,
       3,      3,      3,      3,
       3,      3,      3,      3,
       3,      3,      3,      3,
       3,      3,      3,      3,
       0,      1,      5,      7,
       7,      7,      7,      7,
       7,      7,      7,      7,
       7,      7,      7,      7,
       7,      7,      7,      7,
       7,      7,      7,      7,
       7,      7,      7,      7,
       7,      7,      7,      7,
       0,      1,      5,     13,
      15,     15,     15,     15,
      15,     15,     15,     15,
      15,     15,     15,     15,
      15,     15,     15,     15,
      15,     15,     15,     15,
      15,     15,     15,     15,
      15,     15,     15,     15,
       0,      1,      9,     13,
      29,     31,     31,     31,
      31,     31,     31,     31,
      31,     31,     31,     31,
      31,     31,     31,     31,
      31,     31,     31,     31,
      31,     31,     31,     31,
      31,     31,     31,     31,
       0,      1,      9,     21,
      45,     61,     63,     63,
      63,     63,     63,     63,
      63,     63,     63,     63,
      63,     63,     63,     63,
      63,     63,     63,     63,
      63,     63,     63,     63,
      63,     63,     63,     63,
       0,      1,     17,     41,
      45,     93,    125,    127,
     127,    127,    127,    127,
     127,    127,    127,    127,
     127,    127,    127,    127,
     127,    127,    127,    127,
     127,    127,    127,    127,
     127,    127,    127,    127,
       0,      1,     17,     41,
      85,    173,    221,    253,
     255,    255,    255,    255,
     255,    255,    255,    255,
     255,    255,    255,    255,
     255,    255,    255,    255,
     255,    255,    255,    255,
     255,    255,    255,    255,
       0,      1,     33,     73,
     169,    173,    365,    445,
     509,    511,    511,    511,
     511,    511,    511,    511,
     511,    511,    511,    511,
     511,    511,    511,    511,
     511,    511,    511,    511,
     511,    511,    511,    511,
       0,      1,     33,    145,
     297,    341,    429,    733,
     957,   1021,   1023,   1023,
    1023,   1023,   1023,   1023,
    1023,   1023,   1023,   1023,
    1023,   1023,   1023,   1023,
    1023,   1023,   1023,   1023,
    1023,   1023,   1023,   1023,
       0,      1,     65,    145,
     297,    681,    685,   1453,
    1757,   1917,   2045,   2047,
    2047,   2047,   2047,   2047,
    2047,   2047,   2047,   2047,
    2047,   2047,   2047,   2047,
    2047,   2047,   2047,   2047,
    2047,   2047,   2047,   2047,
       0,      1,     65,    273,
     585,   1193,   1365,   1709,
    2925,   3549,   3965,   4093,
    4095,   4095,   4095,   4095,
    4095,   4095,   4095,   4095,
    4095,   4095,   4095,   4095,
    4095,   4095,   4095,   4095,
    4095,   4095,   4095,   4095,
       0,      1,    129,    545,
    1169,   2345,   2729,   2733,
    3501,   5853,   7101,   7933,
    8189,   8191,   8191,   8191,
    8191,   8191,   8191,   8191,
    8191,   8191,   8191,   8191,
    8191,   8191,   8191,   8191,
    8191,   8191,   8191,   8191,
       0,      1,    129,    545,
    2193,   2345,   5289,   5461,
    5805,  11693,  11997,  15293,
   16125,  16381,  16383,  16383,
   16383,  16383,  16383,  16383,
   16383,  16383,  16383,  16383,
   16383,  16383,  16383,  16383,
   16383,  16383,  16383,  16383,
       0,      1,    257,   1057,
    2193,   4681,   9513,  10921,
   10925,  13741,  23405,  28381,
   30653,  32253,  32765,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
   32767,  32767,  32767,  32767,
       0,      1,    257,   2113,
    4369,   9361,  10537,  21161,
   21845,  23213,  44461,  46813,
   56797,  61309,  65021,  65533,
   65535,  65535,  65535,  65535,
   65535,  65535,  65535,  65535,
   65535,  65535,  65535,  65535,
   65535,  65535,  65535,  65535,
       0,      1,    513,   2113,
    8737,  17553,  18729,  38057,
   43689,  43693,  54957,  93613,
   95965, 113597, 126845, 130045,
  131069, 131071, 131071, 131071,
  131071, 131071, 131071, 131071,
  131071, 131071, 131071, 131071,
  131071, 131071, 131071, 131071,
       0,      1,    513,   4161,
   16929,  34961,  37449,  76073,
   86697,  87381,  88749, 109997,
  187245, 192221, 228285, 253821,
  261117, 262141, 262143, 262143,
  262143, 262143, 262143, 262143,
  262143, 262143, 262143, 262143,
  262143, 262143, 262143, 262143,
       0,      1,   1025,   8321,
   16929,  34961,  74897,  84265,
  169129, 174761, 174765, 186029,
  355757, 374493, 454365, 490429,
  507645, 522237, 524285, 524287,
  524287, 524287, 524287, 524287,
  524287, 524287, 524287, 524287,
  524287, 524287, 524287, 524287,
       0,      1,   1025,   8321,
   33825,  69905, 148625, 149801,
  304425, 346793, 349525, 354989,
  439725, 748973, 751325, 908765,
  980925, 1031933, 1046525, 1048573,
  1048575, 1048575, 1048575, 1048575,
  1048575, 1048575, 1048575, 1048575,
  1048575, 1048575, 1048575, 1048575,
       0,      1,   2049,  16513,
   67649, 139809, 280721, 299593,
  338217, 677033, 699049, 699053,
  743085, 1420717, 1497965, 1535709,
  1817533, 1961853, 2064125, 2093053,
  2097149, 2097151, 2097151, 2097151,
  2097151, 2097151, 2097151, 2097151,
  2097151, 2097151, 2097151, 2097151,
       0,      1,   2049,  33025,
  133185, 270881, 297105, 599185,
  608553, 1217705, 1395369, 1398101,
  1403565, 1758893, 2977197, 2995933,
  3600093, 3652541, 3927933, 4128253,
  4190205, 4194301, 4194303, 4194303,
  4194303, 4194303, 4194303, 4194303,
  4194303, 4194303, 4194303, 4194303,
       0,      1,   4097,  33025,
  133185, 541217, 559249, 1189009,
  1198377, 2435369, 2708137, 2796201,
  2796205, 2972333, 3517869, 5991853,
  6010589, 7270109, 7306173, 8122237,
  8322557, 8380413, 8388605, 8388607,
  8388607, 8388607, 8388607, 8388607,
  8388607, 8388607, 8388607, 8388607,
       0,      1,   4097,  65793,
  266305, 541217, 1118481, 2245777,
  2396745, 2697513, 4887721, 5581481,
  5592405, 5614253, 7001773, 11382189,
  11983725, 12285661, 14540253, 15694781,
  16244605, 16645629, 16769021, 16777213,
  16777215, 16777215, 16777215, 16777215,
  16777215, 16777215, 16777215, 16777215,
       0,      1,   8193, 131585,
  532609, 1082401, 2236961, 4491409,
  4793489, 4868393, 9741609, 11096745,
  11184809, 11184813, 11360941, 14071213,
  23817645, 23967453, 24571613, 29080509,
  31389629, 32489213, 33291261, 33538045,
  33554429, 33554431, 33554431, 33554431,
  33554431, 33554431, 33554431, 33554431,
       0,      1,   8193, 131585,
  1056897, 2164801, 4465185, 4753553,
  9577617, 9586985, 19212585, 21664937,
  22358697, 22369621, 22391469, 23778989,
  28683693, 47934893, 47953629, 57601757,
  58178493, 62779261, 64995069, 66845693,
  67092477, 67108861, 67108863, 67108863,
  67108863, 67108863, 67108863, 67108863,
       0,      1,  16385, 262657,
  1056897, 4261953, 8667681, 8947857,
  19022993, 19173961, 21580073, 38966441,
  44389033, 44739241, 44739245, 45439661,
  56284845, 91057581, 95869805, 96171741,
  116322013, 116882365, 125693821, 132103933,
  133692413, 134184957, 134217725, 134217727,
  134217727, 134217727, 134217727, 134217727,
       0,      1,  16385, 525313,
  2113665, 8521793, 8929825, 17895697,
  35932305, 38347921, 38422825, 77932841,
  86660265, 89434793, 89478485, 89565869,
  95114925, 112569773, 191589805, 191739613,
  196570845, 232644061, 250575805, 251391869,
  264208125, 267384829, 268402685, 268435453,
  268435455, 268435455, 268435455, 268435455,
       0,      1,  32769, 525313,
  4227329, 8521793, 17318433, 35791393,
  38045841, 76620945, 76695849, 86321449,
  156406953, 177556137, 178956969, 178956973,
  181758637, 224057005, 364228013, 383479213,
  383629021, 460779229, 465288125, 502234045,
  519827325, 528416253, 535820285, 536805373,
  536870909, 536870911, 536870911, 536870911,
       0,      1,  32769, 1049601,
  8421633, 17043521, 34636833, 71442977,
  71862417, 152192145, 153391689, 155797801,
  311731497, 346641065, 357870249, 357913941,
  358001325, 380459693, 450278829, 762146221,
  766958445, 769357533, 930016989, 930855869,
  1004468157, 1039654781, 1056898557, 1071642621,
  1073676285, 1073741821, 1073741823, 1073741823,
       0,      1,  65537, 2099201,
  8421633, 34087041, 69273665, 138682913,
  143165585, 287458449, 306783377, 307382569,
  614803753, 625644713, 714427049, 715827881,
  715827885, 718629549, 896194221, 917876141,
  1532718509, 1533916893, 1572566749, 1861152477,
  1870117821, 2008936317, 2079309565, 2130640381,
  2143285245, 2147352573, 2147483645, 2147483647,
       0,      1,  65537, 2099201,
  16843009, 67641473, 138479681, 277365281,
  286331153, 574916753, 613491857, 613566761,
  690563369, 1246925993, 1386828457, 1431481001,
  1431655765, 1432005293, 1521310381, 1801115309,
  2913840557UL, 3067833773UL, 3067983581UL, 3145133789UL,
  3722304989UL, 3740236733UL, 4018007933UL, 4159684349UL,
  4261281277UL, 4290768893UL, 4294836221UL, 4294967293UL,
};


const uint32_t* lookup_table_32_table[] = {
  lut_lfo_increments,
  lut_portamento_increments,
  lut_oscillator_increments,
  lut_euclidean,
};

const uint16_t chr_characters[] = {
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,    272,   1280,  29012,
   46420,   9352,  39716,    256,
   39936,  61440,   1020,    340,
       8,     68,     16,    136,
   64512,  24576,  55364,  61508,
   25668,  46148,  48196,  57344,
   64580,  62532,    272,    264,
     160,   4164,    520,  33936,
   64592,  60484,  61776,  39936,
   61712,  40004,  35908,  48192,
   27716,  37136,  30720,   3236,
    7168,  28288,  28192,  64512,
   52292,  64544,  52324,  46148,
   33040,  31744,   3208,  27688,
     680,    656,  37000,  39936,
     544,  61440,     40,   4096,
     512,  63556,   7204,   6212,
   28744,  39940,  35844,  62016,
   11332,   4180,  12352,    432,
     272,  10324,   8272,  14404,
   35972,  50276,     80,  45632,
    7172,  14336,   2056,  10280,
     680,  29248,   4108,  37388,
     272,  37088,     68,      0,
   24736,   3592,  33408,   4136,
     224,    524,    896,     56,
   24712,  18568,     24,     40,
   60416,  10308,   4368,  11840,
   64520,  64516,  65024,  64768,
   64640,  64576,  64544,  64528,
   49152,  57344,  28672,  14336,
    6144,   7168,  35840,  50176,
   65532,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,      0,
       0,      0,      0,  65532,
};


const uint16_t* char_table[] = {
  chr_characters,
};


}  // namespace yarns
